package org.ovirt.engine.core.common.utils; import java.util.function.Supplier; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.compat.Version; public class CompatibilityVersionUtils extends CommonCompatibilityVersionUtils { public static Version getEffective(Version vmCustomCompatibilityVersion, Supplier<Version> clusterCompatibilityVersionSupplier) { if (vmCustomCompatibilityVersion != null) { return vmCustomCompatibilityVersion; } if (clusterCompatibilityVersionSupplier != null) { Version clusterCompatibilityVersion = clusterCompatibilityVersionSupplier.get(); if (clusterCompatibilityVersion != null) { return clusterCompatibilityVersion; } } return Version.getLast(); } public static Version getEffective(VmBase vmBase, Cluster cluster) { Version vmCustomCompatibilityVersion = vmBase != null ? vmBase.getCustomCompatibilityVersion() : null; Version clusterCompatibilityVersion = cluster != null ? cluster.getCompatibilityVersion() : null; return CompatibilityVersionUtils.getEffective( vmCustomCompatibilityVersion, clusterCompatibilityVersion, Version.getLast()); } public static Version getEffective(VmBase vmBase, Supplier<Cluster> clusterSupplier) { if (vmBase != null && vmBase.getCustomCompatibilityVersion() != null) { return vmBase.getCustomCompatibilityVersion(); } else { Cluster cluster = clusterSupplier.get(); return cluster != null ? cluster.getCompatibilityVersion() : null; } } public static Version getEffective(VM vm, Supplier<Cluster> clusterSupplier) { return getEffective(vm != null ? vm.getStaticData() : null, clusterSupplier); } }